package com.example.itext.DISC行为风格测试报告;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.LineSeparator;
import com.sun.glass.ui.Size;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import static com.itextpdf.text.Rectangle.NO_BORDER;

public class Itext {
    public static void main(String[] args) throws IOException, DocumentException {

        Font font = new Font(BaseFont.createFont("D:\\javaIdea\\itext\\src\\main\\resources\\static\\msyh.ttf",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED));
        Document document = new Document();

        PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("D:\\javaIdea\\IDEAPDF\\PDF报告.pdf"));

        document.open();

        Image image = Image.getInstance("C:\\Users\\admin\\Desktop\\tsDISC_Banner.png");

        image.setAbsolutePosition(420,765);
        image.scaleAbsolute(150,40);
        document.add(image);

        LineSeparator line = new LineSeparator(1,120, BaseColor.BLACK, Element.ALIGN_JUSTIFIED_ALL,-42);
        document.add(line);

        // 换三行
        ln(document,5);

        document.add(getParagraphBOLD("DISC行为风格测试报告",font,30,1));

        ln(document,2);

        document.add(getParagraph("本分析基于特定问卷的调查结果而产生",font,13,1));
        document.add(getParagraph("不建议将本分析报告视为唯一的评断标准",font,13,1));
        document.add(getParagraph("本报告提供给本人及其主管的参考信息",font,13,1));

        ln(document,4);


        // 创建表格存版本信息
        Paragraph tableParagraph = new Paragraph();
        tableParagraph.setAlignment(1);
        PdfPTable table = new PdfPTable(2);
        table.setWidths(new float[] { 20,30 });

        table.addCell(getNoBorderCell("测评系统： ",font,2));
        table.addCell(getNoBorderCell("DISC测试标准版",font,0));

        table.addCell(getNoBorderCell("公司名称：",font,2));
        table.addCell(getNoBorderCell("广州乐智信息技术有限公司",font,0));

        table.addCell(getNoBorderCell("版本名称：",font,2));
        table.addCell(getNoBorderCell("TalentSays 乐智人才测评",font,0));

        table.addCell(getNoBorderCell("版本路径：",font,2));
        table.addCell(getNoBorderCell("tsw",font,0));

        tableParagraph.add(table);
        document.add(tableParagraph);

        document.close();
        pdfWriter.close();
    }

    /**
     * 换行
     * @param document
     * @param i 换多少行
     * @throws DocumentException
     */
    private static void ln(Document document, int i) throws DocumentException {
        for (int a = 0 ; a < i ; a++)
        {
            document.add(new Paragraph("\n"));
        }

    }

    /**
     * 获取段落文本
     * @Author: 李锦龙
     * @Description: TODO
     * @Date 2022/1/20 15:20
     * @param text 文本
     * @param font  字体
     * @param FontSize  字体的大小
     * @param Alignment 对齐方式，0是左对齐，1是中对齐，2是右对齐
     * @return com.itextpdf.text.Paragraph
     **/
    private static Paragraph getParagraph(String text,Font font , int FontSize,Integer Alignment)
    {
        Font font1 = new Font(font);
        font1.setSize(FontSize);
        Paragraph elements = new Paragraph(text, font1);
        elements.setLeading(19,0);
        elements.setAlignment(Alignment);
        elements.setSpacingAfter(2);  // 段落后间距
        elements.setSpacingBefore(2); // 段落前间距

        return elements;
    }

    /**
     * 获取粗体段落文本
     * @Author: 李锦龙
     * @Description: TODO
     * @Date 2022/1/20 15:20
     * @param text 文本
     * @param font  字体
     * @param FontSize  字体的大小
     * @param Alignment 对齐方式，0是左对齐，1是中对齐，2是右对齐
     * @return com.itextpdf.text.Paragraph
     **/
    private static Paragraph getParagraphBOLD(String text,Font font, int FontSize,Integer Alignment)
    {
        Font font1 = new Font(font);
        font1.setSize(FontSize);
        font1.setStyle(Font.BOLD);
        Paragraph elements = new Paragraph(text, font1);
        elements.setAlignment(Alignment);
        return elements;
    }



    public static PdfPCell getNoBorderCell(String text,Font font,int Alignment)
    {
        PdfPCell pdfPCell = new PdfPCell(new Paragraph(text, font));
        // 水平垂直对齐
        pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        // 水平对齐方式
        pdfPCell.setHorizontalAlignment(Alignment);
        // 设置无边框
        pdfPCell.setBorder(NO_BORDER);
        // 设置间距
        pdfPCell.setPaddingLeft(12);
        pdfPCell.setPaddingRight(12);
        pdfPCell.setPaddingTop(12);
        pdfPCell.setPaddingBottom(12);
        return pdfPCell;

    }
}
